1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 package sun.nio.cs.ext;
27
28 import java.nio.charset.Charset;
29 import java.nio.charset.CharsetDecoder;
30 import java.nio.charset.CharsetEncoder;
31 import sun.nio.cs.HistoricallyNamedCharset;
32 import static sun.nio.cs.CharsetMapping.*;
33
34 public class MS950_HKSCS extends Charset implements HistoricallyNamedCharset
35 {
36 public MS950_HKSCS() {
37 super("x-MS950-HKSCS", ExtendedCharsets.aliasesFor("x-MS950-HKSCS"));
38 }
39
40 public String historicalName() {
41 return "MS950_HKSCS";
42 }
43
44 public boolean contains(Charset cs) {
45 return ((cs.name().equals("US-ASCII"))
46 || (cs instanceof MS950)
47 || (cs instanceof MS950_HKSCS));
48 }
49
50 public CharsetDecoder newDecoder() {
51 return new Decoder(this);
52 }
53
54 public CharsetEncoder newEncoder() {
55 return new Encoder(this);
56 }
57
58 static class Decoder extends HKSCS.Decoder {
59 private static DoubleByte.Decoder ms950 =
60 (DoubleByte.Decoder)new MS950().newDecoder();
61
62 private static char[][] b2cBmp = new char[0x100][];
63 private static char[][] b2cSupp = new char[0x100][];
64 static {
65 initb2c(b2cBmp, HKSCSMapping.b2cBmpStr);
66 initb2c(b2cSupp, HKSCSMapping.b2cSuppStr);
67 }
68
69 private Decoder(Charset cs) {
70 super(cs, ms950, b2cBmp, b2cSupp);
71 }
72 }
73
74 private static class Encoder extends HKSCS.Encoder {
75 private static DoubleByte.Encoder ms950 =
76 (DoubleByte.Encoder)new MS950().newEncoder();
77
78 static char[][] c2bBmp = new char[0x100][];
79 static char[][] c2bSupp = new char[0x100][];
80 static {
81 initc2b(c2bBmp, HKSCSMapping.b2cBmpStr, HKSCSMapping.pua);
82 initc2b(c2bSupp, HKSCSMapping.b2cSuppStr, null);
83 }
84
85 private Encoder(Charset cs) {
86 super(cs, ms950, c2bBmp, c2bSupp);
87 }
88 }
89 }